<?php

/*
 * Copyright (c) 2009 Joao Paulo Cirino Silva de Novais <joaopaulonovais@gmail.com>
 */

class EscolaView extends View {

	private $mensagem;
    private $tipoPerfil;
    private $tipoContato;
    private $escolaPerfil;
    private $escolaContato;

    function __construct($tela) {

        $this->modelo = new HTML_Template_IT();
        if ($tela == "Cadastro") {
            $this->modelo->loadTemplateFile("modelo/cadastrarEscola.html");
        } elseif ($tela == "Visualizacao") {
        	$this->modelo->loadTemplateFile("modelo/visualizarEscola.html");
        } else {
        	$this->modelo->loadTemplateFile("modelo/consultarEscola.html");
        	
        }
    }

    public function setMensagem($mensagem) {

        $this->mensagem = $mensagem;
    }
    
    public function setTipoPerfil($tipoPerfil) {

        $this->tipoPerfil = $tipoPerfil;
    }
    
    public function setTipoContato($tipoContato) {

        $this->tipoContato = $tipoContato;
    }
    
    public function setEscola($escola) {

        $this->modelo->setVariable("cod_escola"      , $escola->get("cod_escola"));
        $this->modelo->setVariable("nom_escola"      , $escola->get("nom_escola"));
        $this->modelo->setVariable("nom_razao_social", $escola->get("nom_razao_social"));
        $this->modelo->setVariable("num_cnpj"        , $escola->get("num_cnpj"));
        $this->modelo->setVariable("des_endereco"    , $escola->get("des_endereco"));
        $this->modelo->setVariable("des_cidade"      , $escola->get("des_cidade"));
        $this->modelo->setVariable("des_bairro"      , $escola->get("des_bairro"));
        $this->modelo->setVariable("sig_uf"          , $escola->get("sig_uf"));
        $this->modelo->setVariable("cep_escola"      , $escola->get("cep_escola"));
        $this->modelo->setVariable("txt_observacao"  , $escola->get("txt_observacao"));
    }
/*
    private function montarTela ($situacao, $registros) {
    	
    	if ($situacao == "Formulario" || $situacao = "Completa") {
    	    $this->modelo->touchBlock("Formulario");
    	    $this->modelo->touchBlock("Gravar");
    	}
    	
    	if ($situacao == "Perfil" || $situacao = "Completa") {
    	    $this->modelo->touchBlock("Perfil");
    	    $this->preencherRelacaoPerfil(null);
    	    $this->listarPerfil($registros);
    	}

    	if ($situacao == "Contato" || $situacao = "Completa") {
    	    $this->modelo->touchBlock("Contato");
            $this->preencherRelacaoContato(null);
            $this->listarPerfil($registros);
    	}
    }
*/
    public function preencherRelacaoPerfil($cod_tipo_perfil) {

        $this->modelo->setCurrentBlock("Tipo_Perfil");

        foreach ($this->tipoPerfil as $registro) {

            $this->modelo->setVariable("cod_tipo_perfil", $registro->get("cod_tipo_perfil"));
            $this->modelo->setVariable("des_tipo_perfil", $registro->get("des_tipo_perfil"));
            
            if ($cod_tipo_perfil == $registro->get("cod_tipo_perfil")) {
            	$this->modelo->setVariable("selecionado", "selected='selected'");
            } else {
            	$this->modelo->setVariable("selecionado", "");
            }
            
            $this->modelo->parseCurrentBlock();
        }
    }
    //Lista os perfis cadastrados para uma escola
    public function listarPerfil ($registros, $escola, $acao) {
    	
        if ($this->mensagem) {

            $this->modelo->setVariable("mensagem", $this->mensagem);
        } else {

            $this->modelo->setVariable("mensagem", "");
        }    	
    	
        $this->modelo->setVariable("qtd_perfis", count($registros));
        
        if(is_null($acao)) {
            $this->preencherRelacaoPerfil(null);
            $this->preencherRelacaoContato(null);
        }
        //Recolocamos os dados do pai na tela
	    $this->modelo->setCurrentBlock("Formulario");
        $this->setEscola($escola);
        
        $this->modelo->setCurrentBlock("Escola_Perfil");
    	if ($registros) {
        	
            foreach ($registros as $registro) {

                $this->modelo->setVariable("cod_escola_perfil", $registro->get("cod_escola"));
                $this->modelo->setVariable("cod_tipo_perfil"  , $registro->get("cod_tipo_perfil"));
                $this->modelo->setVariable("des_tipo_perfil"  , $registro->get("des_tipo_perfil"));
                $this->modelo->parseCurrentBlock();
            }
        } else {
            
            $this->modelo->setVariable("cod_escola_perfil" , "");
            $this->modelo->setVariable("cod_tipo_perfil"   , "");
            $this->modelo->setVariable("des_tipo_perfil"   , "");
            $this->modelo->parseCurrentBlock();
        }
        
        if(is_null($acao)) {
            $this->modelo->show();
        }
    }
    //Edita um perfil cadastrado, povoando a tela de cadastro de perfil
    public function editarPerfil ($escolaPerfil, $escola) {

        if ($this->mensagem) {

            $this->modelo->setVariable("mensagem", $this->mensagem);
        } else {

            $this->modelo->setVariable("mensagem", "");
        }    	

        //Recolocamos os dados do pai na tela
	    $this->modelo->setCurrentBlock("Formulario");
        $this->setEscola($escola);
        
    	$this->modelo->setCurrentBlock("Perfil");
        $this->preencherRelacaoContato(null);
    	$this->modelo->setVariable("obs_perfil", $escolaPerfil->get("des_observacao"));
    	$this->preencherRelacaoPerfil($escolaPerfil->get("cod_tipo_perfil"));
    	$this->modelo->parseCurrentBlock();
    	$this->modelo->show();

    }
    
    public function preencherRelacaoContato($cod_tipo_contato) {
    	
        $this->modelo->setCurrentBlock("Tipo_Contato");

        foreach ($this->tipoContato as $registro) {

            $this->modelo->setVariable("cod_tipo_contato", $registro->get("cod_tipo_contato"));
            $this->modelo->setVariable("des_tipo_contato", $registro->get("des_tipo_contato"));
            
            if ($cod_tipo_contato == $registro->get("cod_tipo_contato")) {
            	$this->modelo->setVariable("selecionado", "selected='selected'");
            } else {
            	$this->modelo->setVariable("selecionado", "");
            }
            
            $this->modelo->parseCurrentBlock();
        }
    }
    
    public function listarContato ($registros, $escola, $acao) {

        if ($this->mensagem) {

            $this->modelo->setVariable("mensagem", $this->mensagem);
        } else {

            $this->modelo->setVariable("mensagem", "");
        }    	
    	
    	$this->modelo->setVariable("qtd_contatos", count($registros));
    	
    	if(is_null($acao)) {
            $this->preencherRelacaoPerfil(null);
            $this->preencherRelacaoContato(null);
    	}
    	
    	//Recolocamos os dados do pai na tela
	    $this->modelo->setCurrentBlock("Formulario");
        $this->setEscola($escola);

	    $this->modelo->setCurrentBlock("Escola_Contato");
    	if ($registros) {
        	
            foreach ($registros as $registro) {

                $this->modelo->setVariable("cod_escola_contato", $registro->get("cod_escola"));
                $this->modelo->setVariable("cod_tipo_contato"  , $registro->get("cod_tipo_contato"));
                $this->modelo->setVariable("des_tipo_contato"  , $registro->get("des_tipo_contato"));
                $this->modelo->setVariable("des_contato"       , $registro->get("des_contato"));
                $this->modelo->parseCurrentBlock();
                
            }
        } else {
            
            $this->modelo->setVariable("cod_escola_contato" , "");
            $this->modelo->setVariable("cod_tipo_contato"   , "");
            $this->modelo->setVariable("des_tipo_contato"   , "");
            $this->modelo->setVariable("des_contato"   , "");
            $this->modelo->parseCurrentBlock();
        }
        
        if(is_null($acao)) {
            $this->modelo->show();
        }
    }
    
    public function editarContato ($escolaContato, $escola) {
    	
        if ($this->mensagem) {

            $this->modelo->setVariable("mensagem", $this->mensagem);
        } else {

            $this->modelo->setVariable("mensagem", "");
        }

        //Recolocamos os dados do pai na tela
	    $this->modelo->setCurrentBlock("Formulario");
        $this->setEscola($escola);
        
        $this->modelo->setCurrentBlock("Contato");
        $this->preencherRelacaoPerfil(null);
        $this->modelo->setVariable("des_contato", $escolaContato->get("des_contato"));
    	$this->modelo->setVariable("obs_contato", $escolaContato->get("des_observacao"));
    	$this->preencherRelacaoContato($escolaContato->get("cod_tipo_contato"));
    	$this->modelo->parseCurrentBlock();
    	$this->modelo->show();
    }
    
    public function editar(Model $escola) {

    	if ($escola->get("cod_escola")) {
    		$this->preencherRelacaoPerfil(null);
    		$this->preencherRelacaoContato(null);
        }
        
        if ($this->mensagem) {

            $this->modelo->setVariable("mensagem", $this->mensagem);
        } else {

            $this->modelo->setVariable("mensagem", "");
        }
        
        //$this->modelo->touchBlock("Gravar");
        $this->modelo->setCurrentBlock("Formulario");
        $this->setEscola($escola);
        $this->modelo->parseCurrentBlock();
        $this->modelo->show();
    }
    
    public function consultar($escolas) {
    	
    	$this->preencherRelacaoPerfil(null);
    	
        if ($this->mensagem) {
            $this->modelo->setVariable("mensagem", $this->mensagem);
        } else {
            $this->modelo->setVariable("mensagem", "");
        }
        
        if ($escolas) {

            $this->modelo->setVariable("qtd_registros", count($escolas));
            $this->modelo->setCurrentBlock("Escola");

            foreach ($escolas as $escola) {

                $this->modelo->setVariable("cod_escola"      , $escola->get("cod_escola"));
                $this->modelo->setVariable("nom_escola"      , $escola->get("nom_escola"));
                $this->modelo->setVariable("nom_razao_social", $escola->get("nom_razao_social"));
                $this->modelo->setVariable("num_cnpj"        , $escola->get("num_cnpj"));
                $this->modelo->parseCurrentBlock();
            }
        } else {

            $this->modelo->setVariable("cod_escola"      , "");
            $this->modelo->setVariable("nom_escola"      , "");
            $this->modelo->setVariable("nom_razao_social", "");
            $this->modelo->setVariable("num_cnpj"        , "");
            $this->modelo->setVariable("qtd_registros"   , 0);
            $this->modelo->parseCurrentBlock();
        }
        $this->modelo->show();
    }
    
    public function visualizar($escola, $perfis, $contatos) {

        if ($escola) {
        	
            try {
            	
            	$this->listarPerfil($perfis,    $escola, "Visualizar");
                $this->listarContato($contatos, $escola, "Visualizar");
                
            } catch (Exception $e) {
            	$this->modelo->setVariable("mensagem", $e->getMessage());
            }
        } else {
            $this->modelo->setVariable("mensagem", "Ops!Não foi possível apresentar as informações da escola. Tente mais tarde. :-(");
            
        }
        $this->modelo->parseCurrentBlock();
        $this->modelo->show();
    }
}

?>